﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CRC.Incidencias.Presentacion;
using CRC.Incidencias.Dominio.Controladores;
using CRC.Incidencias.Dominio.Clases;
using CRC.Comun.Presentacion;

namespace CRC.Incidencias.Presentacion
{
    public partial class AbrirIncidencia : UsrIncidencia
    {
        private static ControladorAbrirIncidencia cAI = new ControladorAbrirIncidencia();
        private int intSalon;

        public AbrirIncidencia(): base()
        {
            InitializeComponent();
        }

        public AbrirIncidencia(int pIntSalon) : this()
        {
            this.intSalon = pIntSalon;
            CargarQuienAtiendeIncidencias();
        }

        private void CargarQuienAtiendeIncidencias() 
        {
            try
            {
                this.cmbQuienAtiendeIncidencia.SetData(
                    cAI.ListaQuienAtenderaIncidencias()
                );
                cmbQuienAtiendeIncidencia.addItem(-1, "Sin asignar");
                cmbQuienAtiendeIncidencia.SelectedKey = -1;
            }
            catch (ApplicationException aEx)
            {
                MessageBox.Show(
                    aEx.Message, "Advertencia",
                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            catch (Exception ex)
            {
                MessageBox.Show(
                    ex.Message, "Error", 
                    MessageBoxButtons.OK,  MessageBoxIcon.Error
                );

            }
        }

        protected override void butOK_Click(Object sender, System.EventArgs e) 
        {
            if (txtDescripcionConcepto.Text.Trim().Length == 0 
                || txtObservaciones.Text.Length == 0
               // || cmbQuienAtiendeIncidencia.SelectedIndex == -1
            ) {
                MessageBox.Show(
                    "Faltan campos obligatorios por cumplimentar.", 
                    "Advertencia", 
                    MessageBoxButtons.OK, 
                    MessageBoxIcon.Information
                );
            } else {

                try
                {
                    DateTime? fechaLimite = null;
                    if (dateLimite.Checked) fechaLimite = dateLimite.Value;

                    int intIncidencia = cAI.abrirIncidencia(
                        intSalon, 
                        txtCodigoConcepto.Text,
                        (int)cmbQuienAtiendeIncidencia.SelectedKey,
                        fechaLimite, 
                        txtObservaciones.Text.Trim()
                    );

                    String sDescConcTruncado = txtDescripcionConcepto.Text;
                    if (sDescConcTruncado.Length > 100) sDescConcTruncado = sDescConcTruncado.Substring(0, 100) + "...";

                    foreach (IIncidenciasListener listener in incidenciasListeners) 
                    {
                        listener.abrirIncidencia(intIncidencia, txtCodigoConcepto.Text, sDescConcTruncado, 
                            (String)cmbQuienAtiendeIncidencia.SelectedItem, dateLimite.Value, 
                            txtObservaciones.Text
                        );
                    }
                    this.Dispose();
                }
                catch (Exception ex) {

                    MessageBox.Show(
                        ex.Message, "Error", 
                        MessageBoxButtons.OK, MessageBoxIcon.Error
                    );

                }
            }
        }
    }
}
